home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Software Contest 3 / FM Towns Software Contest 3.iso / exp / bpp / no1 / bppus.doc < prev    next >
Text File  |  1994-01-07  |  7KB  |  316 lines

  1.  
  2.                                                                      BPPuser's
  3.  
  4.  
  5.                                     BPP
  6.  
  7.                     BASIC Pre-Processor
  8.  
  9.                            Version 0.90
  10.  
  11.                              ユーザーズマニュアル
  12.  
  13.  
  14.  
  15.  
  16.                              ------  目次  ------
  17.  
  18.                     0. BPPとは        - 2 -
  19.                     1. BPPの使用法      - 3 -
  20.                     2. 使用上の制限・注意点    - 4 -
  21.                     3. おわりに                  - 5 -
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                     - 1 -
  64.  
  65.                                                                      BPPuser's
  66.  
  67.  
  68.  
  69. ◇◆  0.BPPとは ◆◇
  70.  
  71.  
  72.     BPPは、「BASIC Pre-Processor」の略で、ベーシックで構
  73.     造化プログラミングを行うための変換ツールです。  BPPは以下のような機能を
  74.     BASICに付加します。
  75.         ・行番号の無い構造化プログラミング
  76.         ・再帰ローカル変数をサポートしたサブルーチン定義
  77.         ・Cライクなマクロ定義、条件変換(条件コンパイルもどき)
  78.     もちろんBASICの便利で使い慣れた命令、関数がほとんどそのまま利用でき、
  79.     インタプリタにもコンパイラにも使用できます。
  80.  
  81. 《 ブロック構文のサポート 》
  82.  
  83.     BASIC本来のFOR~NEXT、WHILE~WENDに加え、ブロックIF、
  84.     DO~LOOPの構文もサポートしています。
  85.     ループを抜け出すBREAK命令も追加されています。
  86.  
  87. 《 サブルーチン定義 》
  88.  
  89.     SUBROUTINE(A,B,C)のように、パラメータの受け渡しを伴うサブ
  90.     ルーチンを定義できます。このユーザー定義サブルーチンの中ではローカル変数が
  91.     利用でき、再帰呼び出しも可能です。
  92.  
  93. 《 Cライクなマクロ定義 》
  94.  
  95.     Cのプリプロセッサ機能のうち、#DEFINEと#IFDEF/#IFNDEF
  96.     ~#ENDIFの構文をサポートしました。 高度なマクロ置換、 条件コンパイル
  97.     (?)が手軽に利用できます。
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.                                     - 2 -
  127.  
  128.                                                                      BPPuser's
  129.  
  130.  
  131.  
  132. ◇◆  1.BPPの使用法  ◆◇
  133.  
  134.  
  135.     (1)変換するプログラムソースを用意します
  136.  
  137.         プログラムは拡張子が .BPP で、MS-DOS(TOWNS OS) 標準のテ
  138.         キストファイルの形式です。システム付属あるいは市販のエディタ等で編集し
  139.         てください。
  140.  
  141.     (2)BPPを使ってプログラムを変換します
  142.  
  143.         変換するファイル名を尋ねてきますので、キーボードから入力して答えてくだ
  144.         さい。拡張子は省略しても構いません。
  145.  
  146.  
  147.     (3)変換が終わるまで待ちます
  148.  
  149.         変換には予想外に時間がかかることがありますので、コーヒーでも飲んで一休
  150.         みしてください。その方がデバッグの効率もよくなります(^_^;)。
  151.  
  152.  
  153.     (4)出来上がったBASICプログラムを実行します
  154.  
  155.         BPPが出力するプログラムはアスキー形式ですので、デバッグが終わったら
  156.         バイナリ形式にセーブし直すと以後のロード時間が短縮できます。出来上がっ
  157.         たプログラムが正常に動作しない場合には、(1)に戻ってデバッグし、変換を
  158.         やり直してください。
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.                                     - 3 -
  190.  
  191.                                                                      BPPuser's
  192.  
  193.  
  194.  
  195. ◇◆  2.使用上の制限・注意点  ◆◇
  196.  
  197.  
  198.     a.エラー処理
  199.  
  200.         大変申し訳ない話ですが、BPPの内部ではエラー処理をまともに行っていま
  201.         せん。従って入力のソースファイルに文法的なミスがあると動作不安定に陥り
  202.         ます。言語処理系のエラー処理は大変繁雑なため、時には不要なバグを生みか
  203.         ねないからです・・・というのは言い訳で、明らかに手抜きです。今後の課題
  204.         としたいと思います。
  205.  
  206.  
  207.     b.数量的制限
  208.  
  209.         BPPでは、各処理において次のような数量的制限があります。
  210.  
  211.                  項  目          上限      定義変数
  212.         ---------------------------------  ----------  --------------
  213.         ソースファイルの大きさ             OSに依存
  214.         プロシージャ                           128  MAXSUB
  215.         プロシージャの引数                       32  MAXSUBPARAM
  216.         制御構文のネスト                         32  MAXBLOCKNEST
  217.         ローカル変数(プロシージャ当たり)         64  MAXLVAR
  218.         マクロ定義                             256  MAXMACRO
  219.         マクロ引数                               16  MAXMACROPARAM
  220.         #IFDEF/#IFNDEFのネスト             整数の上限
  221.         #INCLUDEのネスト                      16  MAXINCLUDENEST
  222.  
  223.         ただし、#INCLUDEのネストはBASICの制限により実際には13までです。
  224.         それ以外は、BPP.BAS 内の定義変数の値を変更することによって上限値を変え
  225.         ることができます。
  226.  
  227.     c.大文字・小文字の区別
  228.  
  229.         BPPでは、「"」(ダブルクォーテーション)で囲まれた部分以外において、
  230.         英小文字を英大文字に変換します(BASICと同じです)。従ってBPPへ
  231.         の命令は大文字でも小文字でも構いません。C言語とは異なり、マクロ定義に
  232.         ついても大文字小文字は区別されません。
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.                                     - 4 -
  253.  
  254.                                                                      BPPuser's
  255.  
  256.  
  257.  
  258. ◇◆  3.あとがき  ◆◇
  259.  
  260.  
  261.      ふう、疲れた(;_;) ・・・やっと動いた・・・。
  262.  
  263.      BASICはとてもよい言語です。思ったことをすぐに実行して確かめる、とい
  264.     うのはインタプリタならではですね。けれどもBASICは構造化が十分になされ
  265.     ていないので大きなプログラムや複雑なアルゴリズムを書くには不向きです。特に
  266.     ローカル変数が使えないのは、一度CやPASCALを使ったことのある人にとっ
  267.     ては耐えられないところだと思います。
  268.      だったらCやPASCALを使えばいいのですが、さっきも言ったように
  269.     BASICには永年の愛着がありますし、TOWNSにおいては「手元に
  270.     BASICしかない」という状況なのでそうも行きません。
  271.      そこで一挙問題の解決を図ったのが、このBPPです。BASICでローカル変
  272.     数やプロシージャやブロック構文が使えたら、プログラムを組むのが楽になるなあ。
  273.     そうしたら自ずとよいプログラムが書けるに違いない。そうなると必然的にこのコ
  274.     ンテストに出品するプログラムも良いものができる、そんな風にもくろんで開発を
  275.     始めたわけです。
  276.      ところがこのBPP、一見するよりずっと難産でした。BPPとBASICの仕
  277.     事の線引きがなかなかはっきりしなかったり、ローカル変数の扱い方で悩んだり、
  278.     なかなか難しいものです。
  279.      そうこうしているうちに、もう締め切りが目前。というわけで、本来ひとに見せ
  280.     るつもりのなかった作品をお送りすることになりました。
  281.      みなさんこのBPPを活用して、来年のコンテストに備えましょう(^_^;)。
  282.      その際のご感想等お聞かせいただければ幸いです。
  283.  
  284.                             大阪教育大学教育学部付属高等学校平野校舎CMC
  285.                             プログラム・マニュアル製作担当 中橋一朗 (TmSof)
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.                                     - 5 -
  316.